home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / verteiler / zpoint / start_verteiler_08.zprx next >
Text File  |  1995-05-29  |  11KB  |  305 lines

  1.  
  2. /*
  3.     $VER: Start_Verteiler.zprx V0.8 (15-May-95) Copyright (c) Nils Görs
  4.               Verteiler Copyright (c) 1995 by Thomas Eicher
  5.  
  6. [Diese Version hat nur eingeschraenkte Funktionalitaet, aber arbeitet
  7. auch mit ZPoint Version kleiner als beta 37.191
  8.  This Version does not have full functionality, but at least it works
  9. with ZPoint versions before beta 37.191  --Tom]
  10.  
  11.  
  12.    FUNKTIONSBESCHREIBUNG:
  13.  
  14.     Dieses Skript wurde speziell für das Programm VerteilerVerwaltung,
  15.     kurz  VV,  zwecks  Anbindung an Zodiac's Point entwickelt.  Dieses
  16.     Skript   dient   lediglich  der  Auswertung-  und  Versendung  von
  17.     Nachrichten an  mehrere  Empfänger, die  mittels  `VV'  ausgewählt
  18.     wurden.
  19.  
  20.  
  21.    BENUTZUNG:
  22.  
  23.     Schreiben  und  versenden Sie Ihre Nachrichten wie bisher.  Tragen
  24.     Sie  aber  anstelle  aller  Empfänger,  an die Sie diese Nachricht
  25.     senden möchten, lediglich einen ein.  Begeben Sie sich dann in das
  26.     Spool-Brett,  wählen  dort  die  entsprechende  Nachricht  aus und
  27.     starten Sie dieses ARexx-Skript.
  28.     Es  wird  das  Programm  `VV'  gestartet,  wo Sie ganz bequem Ihre
  29.     Verteilerlisten,  erstellen,  editieren, löschen und zum versenden
  30.     von Nachrichten bereitstellen können.
  31.     Start_Verteiler.zprx  wertet  dann  zum einen die Orignalnachricht
  32.     aus,  zum anderen generiert das Skript eine neue Nachricht.  Diese
  33.     neue  Nachricht  weist  natürlich die selben Attribute vor wie die
  34.     Originalnachricht.   Zusätzlich  werden dann zu der Nachricht, die
  35.     verschiedenen Empfänger beigefügt.
  36.  
  37.  
  38.    INSTALLATION:
  39.  
  40.     Kopieren    Sie    bitte    das   Hauptprogramm,   'VV'   in   das
  41.     Tools-Verzeichnis  von Zodiac's Point.  Dieses ARexx-Skript gehört
  42.     in das Rexx-Verzeichnis von Zodiac's Point.
  43.  
  44.     Um  das  Programm  nun  über eine Funktionstaste starten zu können
  45.     müssen Sie folgenden Eintrag in die `fkeys.zp' hinzufügen.
  46.     F1:SYS:Rexxc/RX ZPOINT:Rexx/Start_Verteiler.zprx %s
  47.  
  48.     Alternativ hierzu haben Sie aber auch die Möglichkeit das Programm
  49.     aus dem Pulldown-Menu aufzurufen.  Dazu müssen Sie lediglich einen
  50.     neuen Eintrag in der Datei `usermenus.zp' machen:
  51.     *Nachrichtenverteiler
  52.     Sys:Rexxc/RX ZPoint:Rexx/Start_Verteiler.zprx %s
  53.  
  54.  
  55.     Sie erreichen die Autoren wie folgt:
  56.  
  57.        t.eicher@hsp.zer.de
  58.        N.Goers@Art-Line.Art-Line.de
  59.  
  60.  
  61.    Das Programm Verteiler, welches mit diesem Skript gestartet wird,
  62.    benötigt die "triton.library" >=V1.2
  63.    Triton is (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>  */
  64.  
  65. /*----------------------------------------------------------------
  66.   -Ab hier können Sie das Skript nach Ihren Bedürfnissen anpassen-
  67.   ----------------------------------------------------------------*/
  68. /* wo befindet sich das Hauptprogramm ?? */
  69. Verteiler.main = "zpoint:tools/verteiler"
  70.  
  71. /*----------------------------------------------------------------*/
  72. /* wo befindet sich die Database (default s:verteiler.database)   */
  73. DataBase       = "progdir:Verteiler.database"
  74.  
  75. /*----------------------------------------------------------------*/
  76. /* wo ist die Datei mit den Empfängern (Verteilerliste)?          */
  77. RCVFILE.main   = "t:RCVFILE"
  78.  
  79. /*----------------------------------------------------------------*/
  80. /* zum Auslagern evtl. Daten (Binär- und oder Textnachrichten)    */
  81. Datei.Tmp      = "t:Out.tmp"
  82.  
  83. /*----------------------------------------------------------------*/
  84. /* Erlaubte Optionen:
  85. PERSONAL unterbindet, daß im Kopf der Nachricht vermerkt wird, wer
  86.          alles Kopien dieser Nachricht erhalten hat.
  87. ARCHIVE  Nachricht versenden und im Nachrichtenarchiv speichern.
  88. COOKIE   Cookie anhängen (nur bei Textnachrichten).
  89. Beispiele:
  90. wopts         = 'PERSONAL '
  91.                          ~Bitte beachten Sie dieses Freizeichen!
  92. wopts         = 'COOKIE ARCHIVE '
  93. */
  94. wopts          = ''
  95.  
  96. /*----------------------------------------------------------------*/
  97. /* Originalnachricht wird gelöschen ??
  98.    1 = mit Sicherheitsabfrage
  99.    0 = ohne Sicherheitsabfrage                                    */
  100. DelImmer       = 0
  101.  
  102. /*----------------------------------------------------------------*/
  103. /* In welcher Sprache möchten Sie arbeiten ??
  104.    Möglichkeiten: deutsch
  105.                   english                                         */
  106. Sprache        = "deutsch"
  107. /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  108.  *      Bitte geben Sie hier ihre Präferenzen ein !                *
  109.  *******************************************************************/
  110.  
  111. /*******************************************************************
  112.  *      Bitte unterhalb dieser Zeile nichts mehr verändern!        *
  113.  *******************************************************************/
  114.  
  115. NL             = '0a'x
  116. Diskussion     = "Diskussion-in:"
  117. Empfangsbest   = "EB:"
  118. PGPSignatur    = "PGP-SIG:"
  119. HeaderEnd      = "LEN:"
  120. Anf            = '"'
  121. Space          = ' '
  122.  
  123. /* Hier sind die Texte in den unterschiedlichen Sprachen.  Falls
  124.    Sie diese Texte in eine andere Sprache übersetzen sollten, dann
  125.    senden Sie mir die übersetzten Texte doch bitte zu. */
  126. deutsch.text0  = '"Verteiler läuft!"'
  127. english.text0  = '"Verteiler is running!"'
  128. deutsch.text1  = "Bitte begeben Sie sich"NL,
  129.                  "in das Spool-Brett!"
  130. english.text1  = "Please go into the Spool-Area"
  131. deutsch.text2  = "Empfangsbestätigungen und Kontrollnachrichten"NL,
  132.                  "können nicht bearbeitet werden!"
  133. english.text2  = "receive receptions and controlmessages"NL,
  134.                  "can not be handled!"
  135. deutsch.text3  = "Fehler beim Start von Verteiler!"
  136. english.text3  = "error while opening 'Verteiler!'"
  137. deutsch.text4  = "Sie haben abgebrochen. Die Nachricht wird"NL,
  138.                  "weiterhin nur an den Originalempfänger gesendet."
  139. english.text4  = "You have canceled. The message will"NL,
  140.                  "be send to the main receiver, only."
  141. deutsch.text5  = "Fehler beim Speichern!"
  142. english.text5  = "error while saving!"
  143. deutsch.text6  = "Kann Nachricht nicht verschicken!"
  144. english.text6  = "Couln't send message!"
  145. deutsch.text7  = "Nachricht wurde verschickt."
  146. english.text7  = "Message is on the way, now."
  147. deutsch.text8  = "Soll die Ursprungsnachricht gelöscht werden?"
  148. english.text8  = "Shall I delete the original message?"
  149.  
  150. OPTIONS RESULTS
  151.  
  152. /* ------ von welchem ZP Port wurde das Script aufgerufen ? ------ */
  153. PARSE ARG zpPort
  154. IF zpPort == "" THEN
  155.    zpPort = "ZPoint"
  156. ADDRESS VALUE zpPort
  157.  
  158. /* Dieses Skript darf nur im Spool-Brett ausgeführt werden */
  159. WHICHLEVEL
  160.  IF Result ~= "BOARD" then
  161.  DO
  162.   Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT
  163.  END
  164.  
  165.   BOARDINFO LABEL; BOARDLABEL=Result
  166.  
  167. IF INDEX(Boardlabel,'(Spool') == 0 THEN
  168. DO
  169.   Text1 = VALUE(sprache||.text1); REQUESTNOTIFY Text1; EXIT
  170. END
  171.  
  172.  
  173. /******************************
  174.  * hier ist das Hauptprogramm *
  175.  ******************************/
  176. _Main:
  177.  
  178. MESSAGEINFO STATUS
  179. IF RESULT == "CTL,EB" THEN DO /* Kontrollnachricht! */
  180.     Text1 = VALUE(sprache||.text2); REQUESTNOTIFY Text1; EXIT
  181. END
  182.  
  183. text1 = VALUE(sprache||.text0)
  184. "guilock text="text1
  185.  
  186. IF ~EXISTS(RCVFile.main||zpPort) THEN ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
  187.  
  188. ADDRESS COMMAND Verteiler.main 'DB='Database,
  189.                                'INTO='RCVFILE.main||zpPort,
  190.                                'PB='zpPort
  191.  
  192. IF (RC) ~= 0 THEN DO           /* Fehler beim öffnen von Verteiler */
  193.   Text1 = VALUE(sprache||.text3); REQUESTNOTIFY Text1; EXIT
  194. END; ELSE
  195.  
  196. IF ~EXISTS(RCVFile.main||zpPort) THEN DO
  197.     Text1 = VALUE(sprache||.text4); REQUESTNOTIFY Text1
  198. EXIT; END
  199.  
  200. MESSAGEINFO POSITION /* an der wievielten Position befindet sich die
  201. MailPosition=RESULT     Originalnachricht ? */
  202.  
  203. /* handelt es sich bei der Nachricht um eine Binär- oder Textdatei ? */
  204. MESSAGEINFO TYPE
  205. NachrichtenTyp=RESULT
  206.   IF NachrichtenTyp = 'BINARY' THEN DO
  207.    CALL _SaveMessageBody
  208.    ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
  209.   EXIT
  210. END
  211.  
  212. SAVEMESSAGEASIS Datei.tmp||zpPort
  213.   IF (RC) == 0 THEN DO             /* Konnte Nachricht gespeichert werden ? */
  214.     Text1 = VALUE(sprache||.text5); REQUESTNOTIFY Text1;EXIT
  215.   END
  216. CALL OPEN(Datei,Datei.tmp||zpPort,Read)
  217.  
  218. /******************************************
  219.  * hier wird eine Textdatei durchgescannt *
  220.  ******************************************/
  221.  
  222. /*  Es  wird  nach Empfänger, Betreff, Diskussion in, PGP-Signatur und
  223.     Empfangsbestätigung gesucht. Es wird lediglich bis zum Textkörper
  224.     durchsucht */
  225.  
  226. MESSAGEINFO RECEIVER
  227. ReceiverName=RESULT
  228. MESSAGEINFO FULLSUBJECT
  229. SubjectName=RESULT
  230.  
  231. DO WHILE ~ABBREV(InString,HeaderEnd)
  232.   InString = READLN(Datei)
  233.  
  234.   IF ABBREV(InString,Diskussion) ~= 0 THEN DO
  235.    FollowupName=DELSTR(InString,1,14)           /* "Diskussion in: " entfernen! */
  236.    Laenge=WORDLENGTH(FollowupName,1)
  237.    FollowUpname=DELSTR(FollowupName,Laenge,1)
  238.    wopts = wopts||Space||'FOLLOWUP '||Anf||FollowUpName||Anf
  239.   END
  240.  
  241.   IF ABBREV(InString,Empfangsbest) ~= 0 THEN DO /* Empfangsbestätigung? */
  242.   wopts = wopts||Space||'CONFIRM'
  243.   END
  244.  
  245.   IF ABBREV(InString,PGPSIGNATUR) ~= 0 THEN DO  /* PGP Signatur ? */
  246.   wopts = wopts||Space||'PGPSIG'
  247.   END
  248. END
  249. CALL CLOSE(Datei); ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
  250.  
  251. _SaveMessageBody:
  252. SAVEMESSAGEBODY Datei.tmp||zpPort
  253. IF (RC) == 0 THEN DO
  254.  Text1 = VALUE(sprache||.text5); REQUESTNOTIFY Text1
  255.  EXIT; END
  256.  
  257. guilock off
  258.  
  259. /* Binärnachricht wird hier versendet */
  260. IF NachrichtenTyp == 'BINARY' THEN DO
  261. MESSAGEINFO RECEIVER
  262. ReceiverName=RESULT
  263. MESSAGEINFO FULLSUBJECT
  264. SubjectName=RESULT
  265. WRITEMESSAGE Datei.tmp||zpPort,
  266.                        'RECEIVER' ReceiverName,
  267.                        'SUBJECT'  Anf||SubjectName||Anf,
  268.                        'RCVFILE'  RCVFILE.main||zpPort,
  269.                        'BINARY',
  270.                        wopts
  271. END
  272. ELSE
  273. /* Textnachricht wird hier versendet */
  274. WRITEMESSAGE Datei.tmp||zpPort,
  275.                        'RECEIVER' ReceiverName,
  276.                        'SUBJECT'  Anf||SubjectName||Anf,
  277.                        'RCVFILE'  RCVFILE.main||zpPort,
  278.                         wopts
  279. id = RESULT
  280.  
  281. IF (id = '') THEN DO               /* Hups! Fehler! */
  282.     Text1 = VALUE(sprache||.text6); REQUESTNOTIFY Text1
  283.     CALL _DeleteTemps
  284. END
  285. ELSE                               /* Alles klar! */
  286.     Text1 = VALUE(sprache||.text7); REQUESTNOTIFY Text1
  287.  
  288. IF DelImmer ~= 0 THEN
  289.    DO       /* Soll die Nachricht gelöscht werden ? */
  290.     Text1 = VALUE(sprache||.text8); REQUESTRESPONSE Text1
  291.    END
  292.     IF RC = 1 THEN
  293.   DO
  294.      JUMPTOMESSAGE MailPosition; DELETE ONE; DOWN
  295.  
  296. _DeleteTemps:
  297.      ADDRESS COMMAND 'delete' RCVFILE.main||zpPort '>NIL:'
  298.      ADDRESS COMMAND 'delete' Datei.tmp||zpPort '>NIL:'
  299.     EXIT
  300.   END
  301. /* Urmail soll behalten werden. Trotzdem müssen wir die Files löschen */
  302. CALL _DeleteTemps
  303. /* EOS */
  304.  
  305.